//  Copyright Druid Mechanics


#include "AbilitySystem/Data/AttributeInfo.h"
#include "Aura/AuraLogChannels.h"

FAuraAttributeInfo UAttributeInfo::FindAttributeInfoForTag(const FGameplayTag& AttributeTag, bool bLogNotFound) const
{
	for(const FAuraAttributeInfo& Info: AttributeInformation)
	{
		/**
	   * 源码定义: bool MatchesTagExact(const FGameplayTag& TagToCheck) const
		 * MatchesTagExact: 确认TagToCheck是否有效并且精切匹配此标签。
		 * 例如: A.1".MatchesTagExact("A")=>False。
		 */
		if(Info.AttributeTag.MatchesTagExact(AttributeTag))
		{
			return Info;
		}
	}
	if(bLogNotFound)
	{
		/**
		 * GetNameSafe: 安全地返回对象名字。
		 */
		UE_LOG(LogAura, Error, TEXT("Can‘t find Info for AttributeTag [%s] on AttributeInfo [%s]."), *AttributeTag.ToString(), *GetNameSafe(this));
	}
	return FAuraAttributeInfo();
}
